#! /usr/bin/env python
# -*- coding: utf-8 -*-
import re
import os
from BeautifulSoup import BeautifulSoup       
from BeautifulSoup import BeautifulStoneSoup     
from htmlentitydefs import name2codepoint
import urllib2
def getpage(url):
    request_headers = { 'User-Agent': 'NothingButMe/0.0.1' }
    request = urllib2.Request(url, None, request_headers)
    urlfile = urllib2.urlopen(request)
    return urlfile.read()
# Téléchargement du fichier 
page=getpage("http://fr.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Wikip%C3%A9dia:AutoWikiBrowser/Typos&rvprop=content&format=xml")
# Premier traitement, obtenir le contus entre <rev>
soup=BeautifulStoneSoup(page)
# Il semblerait que ca soit quelque chose comme : soup.api.query.pages.page.revisions.rev

pat=re.compile("&(\w+);")
def repl(m):
    ent=m.group(1)
    if name2codepoint.has_key(ent):
        return unichr(name2codepoint[ent])
    else:
        return u'?' 
temp=soup.api.query.pages.page.revisions.rev

# Ouverture du fichier en écriture
writer=open('list-ok.txt', 'w')
for i in temp.string.split('\n'):
    text=pat.sub(repl, i)
    print text
    ## On extrait ce qui nous intéresse
    regex=re.match(r"<Typo word=\"(.*)\" find=\"(.*)\" replace=\"(.*)\" />",text)
    # Le mot : regex.group(1)
    # On recherche : regex.group(2)
    # On renplace par : regex.group(3)
    
    ## On remplace les $ par des \
    if regex:
        temp1=re.sub(r"\$", r"\\", regex.group(2))
        temp2=re.sub(r"\$", r"\\", regex.group(3))
        #Et maintenant on écrit la liste comme elle doit ressembler
        writer.write("            (r'" + temp1.encode('utf-8') + "', r'" + temp2.encode('utf-8') + "')," + os.linesep)

writer.close
